package com.xiaoshuidi.cloud.module.contract.service.fee;

import java.util.*;
import javax.validation.*;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.contract.controller.admin.fee.vo.*;
import com.xiaoshuidi.cloud.module.contract.dal.dataobject.fee.FeesDO;

/**
 * 费项配置 Service 接口
 *
 * @author 合房租赁
 */
public interface FeesService {
    /**
     * 创建费项配置
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createFees( FeesCreateReqVO createReqVO);

    /**
     * 批量创建费项配置
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    void createFees( FeeTypesCreateReqVO createReqVO);

    /**
     * 更新费项配置
     *
     * @param updateReqVO 更新信息
     */
    void updateFees( FeesUpdateReqVO updateReqVO);

    /**
     * 删除费项配置
     *
     * @param id 编号
     */
    void deleteFees(Integer id);

    /**
     * 获得费项配置
     *
     * @param id 编号
     * @return 费项配置
     */
    FeesDO getFees(Integer id);

    /**
     * 获得费项配置列表
     *
     * @param ids 编号
     * @return 费项配置列表
     */
    List<FeesDO> getFeesList(Collection<Integer> ids);

    /**
     * 获得费项配置列表
     *
     * @param feeSaveVos 更行状态信息
     * @return 费项配置列表
     */
    void updateFeesList(Collection<FeeSaveVo> feeSaveVos);

    /**
     * 获得费项配置列表
     *
     *
     * @return 费项配置列表
     */
    List<FeesRespVO> getFeesListAll();

    /**
     * 获得费项配置列表
     *
     *
     * @return 费项配置列表
     */
    List<FeesListRespVO> getFeesListByFeeType(String feeSort);

    /**
     * 获取费项列表
     */
    List<FeesRespVO> getFeesTypeListAll();

//    /**
//     * 获得费项配置分页
//     *
//     * @param pageReqVO 分页查询
//     * @return 费项配置分页
//     */
//    PageResult<FeesDO> getFeesPage(FeesPageReqVO pageReqVO);
//
//    /**
//     * 获得费项配置列表, 用于 Excel 导出
//     *
//     * @param exportReqVO 查询条件
//     * @return 费项配置列表
//     */
//    List<FeesDO> getFeesList(FeesExportReqVO exportReqVO);

}
